export default {
  data () {
    return {};
  },
  methods: {
    // 合同编号校验
    validatePactCode (rule, value, callback) {
      if (value) {
        if (
          value &&
          value.match(/^[a-zA-Z0-9\-\_\(\)\&\+\/\[\]]{0,30}$/) == null
        ) {
          callback(
            new Error("只可输入数字、字母和特殊符号(-_()&+/[])")
          );
        } else {
          callback();
        }
      } else {
        callback(new Error("请输入合同编号"));
      }
    },
    // 总重量校验
    validateTotalWeight (rule, value, callback) {
      if (value) {
        let reg = /^(([0-9]+\.[0-9]{1})|([0-9]+\.[0-9]{2})|([0-9]*[1-9][0-9]*))$/;
        if (reg.test(value)) {
          callback();
        } else {
          callback(
            new Error("总重量最多为10位整数，2位小数")
          );
        }
      } else {
        callback(new Error("请输入总重量"));
      }
    },
    // 总体积校验
    validateTotalVolume (rule, value, callback) {
      if (value) {
        let reg = /^(([0-9]+\.[0-9]{1})|([0-9]+\.[0-9]{2})|([0-9]*[1-9][0-9]*))$/;
        if (reg.test(value)) {
          callback();
        } else {
          callback(
            new Error("总体积最多为10位整数，2位小数")
          );
        }
      } else {
        callback(new Error("请输入总体积"));
      }
    },
    // 总价值校验
    validateTotalValue (rule, value, callback) {
      if (value) {
        if (Number(value) === 0) {
          callback();
        }
        let reg = /^(([0-9]+\.[0-9]{1})|([0-9]+\.[0-9]{2})|([0-9]*[1-9][0-9]*))$/;
        if (reg.test(value)) {
          callback();
        } else {
          callback(
            new Error("总价值最多为10位整数，2位小数")
          );
        }
      } else {
        if (value === 0) {
          callback();
        } else {
          callback(new Error("请输入总价值"));
        }
      }
    },
    // 备注校验
    validateRemarks (rule, value, callback) {
      if (value) {
        if (value.length > 200) {
          callback(
            new Error("备注最多输入200个字符")
          );
        } else {
          callback();
        }
      } else {
        callback();
      }
    },
    // 发货地
    validateFromArea (rule, value, callback) {
      if (value) {
        if (this.fromAreaFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "fromAddress") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error("请选择发货地")
        );
      }
    },
    // 发货详细地址
    validateFromAddress (rule, value, callback) {
      if (value) {
        if (value.length > 100) {
          callback(
            new Error("详细地址最多输入100个字符")
          );
        } else {
          callback();
        }
      } else {
        callback(
          new Error("请输入详细地址")
        );
      }
    },
    // 收货地
    validateToArea (rule, value, callback) {
      if (value) {
        if (this.toAreaFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "toAddress") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error("请选择收货地")
        );
      }
    },
    // 收货详细地址
    validateToAddress (rule, value, callback) {
      if (value) {
        if (value.length > 100) {
          callback(
            new Error("详细地址最多输入100个字符")
          );
        } else {
          callback();
        }
      } else {
        callback(
          new Error("请输入详细地址")
        );
      }
    },
    // 发货方
    validateCustomer (rule, value, callback) {
      if (value) {
        if (this.customerFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "customerName") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择发货方`)
        );
      }
    },
    validateFromTime (rule, value, callback) {
      if (value) {
        if (this.customerFromTimeFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "fromTime") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择发货时间`)
        );
      }
    },
    // 收货方
    validateConsignee (rule, value, callback) {
      if (value) {
        if (this.consigneeFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "consigneeName") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择收货方`)
        );
      }
    },
    validateToTime (rule, value, callback) {
      if (value) {
        if (this.toTimeFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "toTime") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择收货时间`)
        );
      }
    },
    validateDays (rule, value, callback) {
      if (value || this.form.days || value === 0 || this.form.days === 0) {
        callback();
      } else {
        callback(
          new Error(`请选择时效`)
        );
      }
    },
    // 车身长
    validateCarLength (rule, value, callback) {
      if (value) {
        if (this.carLengthFlag && this.recordErrors && this.recordErrors.length) {
          let errMessage = null;
          this.recordErrors.map(item => {
            if (item.field === "vehicleLength") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(new Error("请选择车身长"));
      }
    },
    // 容积
    validateCarVolume (rule, value, callback) {
      if (value) {
        let reg = /^([1-9]\d{0,2})(\.\d{1,2})?$/;
        if (reg.test(value)) {
          callback();
        } else {
          callback(
            new Error("容积最多为3位整数，2位小数")
          );
        }
      } else {
        callback(new Error("请输入容积"));
      }
    },
    // 载重
    validateCarWeight (rule, value, callback) {
      if (value) {
        let reg = /^([1-9]\d{0,1})(\.\d{1,2})?$/;
        if (reg.test(value)) {
          callback();
        } else {
          callback(
            new Error("载重最多为2位整数，2位小数")
          );
        }
      } else {
        callback(new Error("请输入载重"));
      }
    },
    // 整车数量
    validateVehicleQuantity (rule, value, callback) {
      if (value) {
        if (this.vehicleQuantityFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "vehicleQuantity") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择整车数量`)
        );
      }
    },
    // 货物分类
    validateCargoType (rule, value, callback) {
      if (value) {
        if (this.cargoTypeFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "cargoType") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择货物分类`)
        );
      }
    },
    // 包装方式
    validatePackageMode (rule, value, callback) {
      if (value) {
        if (this.packageModeFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "packageMode") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择包装方式`)
        );
      }
    },
    // 计费模式
    validateBillingMode (rule, value, callback) {
      if (value) {
        if (this.billingModeFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "billingMode") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      } else {
        callback(
          new Error(`请选择计费模式`)
        );
      }
    },
    // 电子回单
    validateTrackType (rule, value, callback) {
      if (value) {
        if (this.bindFlag && this.errors && this.errors.length) {
          let errMessage = null;
          this.errors.map(item => {
            if (item.field === "trackNo") {
              errMessage = item.message;
            }
          })
          if (errMessage) {
            callback(new Error(`${errMessage}`));
          } else {
            callback();
          }
        } else {
          callback();
        }
      }
    },
  }
};